package com.demo.youxuanmall.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.demo.youxuanmall.common.Result;
import com.demo.youxuanmall.entity.User;

import javax.servlet.http.HttpSession;
import java.util.Map;

public interface UserService {
    /**
     * 用户注册
     */
    User register(User user);
    
    /**
     * 用户登录
     */
    User login(String username, String password);
    
    /**
     * 用户登录（接收User对象和HttpSession）
     */
    Result<User> login(User loginUser, HttpSession session);
    
    /**
     * 根据用户名查询用户
     */
    User getByUsername(String username);
    
    /**
     * 更新用户最后登录信息
     */
    void updateLoginInfo(Long userId, String ip);

    /**
     * 更新用户基本信息
     */
    void updateUserInfo(User user);
    
    /**
     * 更新用户信息（包括session更新）
     */
    Result<User> updateProfile(User user, HttpSession session);
    
    /**
     * 更新密码
     */
    Result<?> updatePassword(User user, HttpSession session);
    
    /**
     * 分页查询所有用户
     */
    Result<Page<User>> listAllUsers(int pageNum, int pageSize);
    
    /**
     * 根据关键词搜索用户
     */
    Result<Page<User>> searchUsers(String keyword, int pageNum, int pageSize);
    
    /**
     * 更新用户状态(启用/禁用)
     */
    Result<Void> updateStatus(Long userId, Integer status);
    
    /**
     * 更新用户角色
     */
    Result<Void> updateRole(Long userId, Integer role);
    
    /**
     * 删除用户(逻辑删除)
     */
    Result<Void> deleteUser(Long userId);
    
    /**
     * 获取用户统计数据 [总用户数, 管理员数, 正常用户数, 禁用用户数]
     */
    Result<Integer[]> getUserStats();
    
    /**
     * 重置用户密码为默认密码(123456)
     */
    Result<Void> resetPassword(Long userId);
    
    /**
     * 获取用户增长数据
     */
    Map<String, Object> getUserGrowthData(String startDate, String endDate);
} 